package com.xyazm.order.service;

import com.xyazm.coupon.domain.param.ReleaseUserCouponParam;
import com.xyazm.order.domain.dto.CancelOrderAssembleDTO;
import com.xyazm.order.domain.dto.ManualAfterSaleDTO;
import com.xyazm.order.domain.mq.ActualRefundDTO;
import com.xyazm.order.domain.mq.OrderPaymentDelayDTO;
import com.xyazm.order.domain.mq.SendOrderStatusChangeEventDTO;
import com.xyazm.order.domain.param.CancelOrderAssembleParam;

/**
 * mq管理
 * @author xuyou
 * @date 2023年02月02日 22:00
 */
public interface IMqMessageService {


    /**
     * 发送订单超时未支付消息
     * @author xuyou
     * 2023-02-02 22:03
     * @param orderPaymentDelayDTO 超时未支付消息
    */
    void sendOrderPayTimeoutDelayMessage(OrderPaymentDelayDTO orderPaymentDelayDTO);

    /**
     * 发送订单标准状态变更消息
     * @author xuyou
     * 2023-02-04 14:58
     * @param sendOrderStatusChangeEventDTO 订单状态变更消息
    */
    void sendStandardOrderStatusChangeMessage(SendOrderStatusChangeEventDTO sendOrderStatusChangeEventDTO);

    /**
     * 取消订单向下游发送释放权益资产消息
     * @author xuyou
     * 2023-02-24 20:45
     * @param cancelOrderAssembleDTO 取消订单信息
    */
    void sendReleaseAssetsMessage(CancelOrderAssembleDTO cancelOrderAssembleDTO);

    /**
     * 取消订单发送实际退款消息
     * @author xuyou
     * 2023-02-25 12:41
     * @param actualRefundDTO 实际退款信息
    */
    void sendActualRefundMessage(ActualRefundDTO actualRefundDTO);

    /**
     * 手动售后发送实际退款消息
     * @author xuyou
     * 2023-02-28 21:53
     * @param manualAfterSaleDTO 售后信息
    */
    void sendAfterSaleRefundMessage(ManualAfterSaleDTO manualAfterSaleDTO);

    /**
     * 手动售后释放优惠券消息
     * @author xuyou
     * 2023-02-26 12:13
     * @param releaseUserCouponParam 释放优惠券信息
    */
    void sendAfterSaleReleaseCouponMessage(ReleaseUserCouponParam releaseUserCouponParam);
}
